AWS の料金監視
Motivation
予算を超えそうになったらアラートを出す
AWS Budgets + AWS SNS でできそう
日々の使用料を監視する
AWS CLI から API を叩くことで実現している人が多かったが、Budgets を使えば自分のしたいことはできそうだったのでそれを利用する。
使用状況レポート
アカウント > レポート から有効にできる。S3 にレポートを出力し Athena で分析できるそう。
が、Cost Explorer の方が見やすそう。
AWS Cost Explorer
アカウント > Cost Explorer から。日々のレポートを出したいなら API を叩くのが良さそうだが、叩くたびに 0.01 USD かかるので注意。そのうちやってみたい。
AWS Budgets
AWS Budgets には、カスタム予算を設定して、コストまたは使用量が予算額や予算量を超えたとき (あるいは、超えると予測されたとき) にアラートを発信できる機能が用意されています。
監視したい項目毎に 予算 (Budgets) を作成し、それぞれについて監視、通知ができる。例えば、月別の EC2 に割り当てる予算と S3 に割り当てる予算を別にしたいし、アラート設定も各々について細々としたい、といった場合に使える。
1日に最大 3 回更新
以下が追跡される
非ブレンドコスト
サブスクリプション
返金
RI
以下のタイプの予算が作成できる
コスト予算: 指定金額に対するコストをモニタリングする
使用料予算: 指定した使用タイプの使用料をモニタリングする
予約予算: RI使用率, RI カバレッジを追跡する
料金
最初の 2 つの予算は無料
それ以降は1日 0.02 USD
AWS Budgets -> Amazon SNS
Amazon SNS のトピックは事前に作成しておく。が、AWS Budgets から SNS のトピックを発行するためには、トピックのポリシーを編集する必要がある。SNS のトピックは、デフォルトだとトピックの所有者のみ発行できるようになっている。 デフォルトだと、以下のようになっている。
code:json
{
"Version": "2008-10-17",
"Id": "__default_policy_ID",
"Statement": [
{
"Sid": "__default_statement_ID",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"SNS:GetTopicAttributes",
"SNS:SetTopicAttributes",
"SNS:AddPermission",
"SNS:RemovePermission",
"SNS:DeleteTopic",
"SNS:Subscribe",
"SNS:ListSubscriptionsByTopic",
"SNS:Publish",
"SNS:Receive"
],
"Resource": "arn:aws:sns:ap-northeast-1:xxxxxxxxx:my-topic",
"Condition": {
"StringEquals": {
"AWS:SourceOwner": "xxxxxxxxx"
}
}
}
]
}
これに、以下を追加する。
code:json
{
"Version": "2008-10-17",
"Id": "__default_policy_ID",
"Statement": [
{ ... }
{
"Sid": "ExampleSid123456789012",
"Effect": "Allow",
"Principal": {
"Service": "budgets.amazonaws.com"
},
"Action": "SNS:Publish",
"Resource": "your topic ARN"
}
]
}